<?php
Yii::import('application.modules.carta.models._base.BaseRangoNutrientes');

/**
 * Modelo (heredado) para la tabla RangoNutrientes
 * @author Mauricio Chamorro <mrchamorro@utn.edu.ec>
 */
class RangoNutrientes extends BaseRangoNutrientes
{

    /**
     * @return RangoNutrientes
     */
    public static function model($className = __CLASS__)
    {
        return parent::model($className);
    }

    public static function label($n = 1)
    {
        return Yii::t('app', 'Rango de Nutrientes|Rangos de Nutrientes', $n);
    }

    /**
     * @return array customized attribute labels (name=>label)
     */
    public function attributeLabels()
    {
        return array(
            'id' => Yii::t('app', 'ID'),
            'min' => Yii::t('app', 'Valor Mínimo'),
            'max' => Yii::t('app', 'Valor Máximo'),
            'tipo_carta_id' => Yii::t('app', 'Tiempo de comida'),
            'edades_id' => Yii::t('app', 'Edad'),
            'nutrientes_id' => Yii::t('app', 'Nutriente'),
            'edades' => null,
            'nutrientes' => null,
            'tipoCarta' => null,
        );
    }

    /**
     * Busca si la tabla del modelo no esta vacia
     * @author Sofia Mejia <asmejia@utn.edu.ec>
     * @return query
     */
    public function contarDatos()
    {
        $command = Yii::app()->db->createCommand()
            ->select("count(id) as total")
            ->from($this->tableName());
        $result = $command->queryAll();
        return $result[0]['total'];
    }

//    SELECT nu.nombre,nu.id,rn.min,rn.max FROM `rango_nutrientes` 
//        rn inner join nutrientes nu where rn.nutrientes_id = nu.id 
//        and rn.edades_id=2 and rn.tipo_carta_id=2 


    public function formatSeriesRangosNutrientes($edad_id, $tipo_carta_id)
    {
        $rangosNutrientes = $this->obtenerRangosNutrientes($edad_id, $tipo_carta_id);
        $temp = array();

//        var_dump($rangosNutrientes);
//        $temp[0]=$rangosNutrientes
        foreach ($rangosNutrientes as $key => $value) {
            switch ($value['nombre']) {
                case 'energia_kcal':$temp[0] = $value;
                    break;
                case 'proteinas_g':$temp[1] = $value;
                    break;
                case 'grasa_total_g':$temp[2] = $value;
                    break;
                case 'carbohidratos_g':$temp[3] = $value;
                    break;
                case 'fibra_dietetica_g':$temp[4] = $value;
                    break;
                case 'calcio_mg':$temp[5] = $value;
                    break;
                case 'fosforo_mg':$temp[6] = $value;
                    break;
                case 'hierro_mg':$temp[7] = $value;
                    break;
                case 'tiamina_mg':$temp[8] = $value;
                    break;
                case 'riboflavina_mg':$temp[9] = $value;
                    break;
                case 'niacina_mg':$temp[10] = $value;
                    break;
                case 'vitamina_c_mg':$temp[11] = $value;
                    break;
                case 'vitamina_a_eqiv_retinol_mcg':$temp[12] = $value;
                    break;
                case 'acidos_grasos_monoinsat_g':$temp[13] = $value;
                    break;
                case 'acidos_grasos_poliinsaturad_g':$temp[14] = $value;
                    break;
                case 'acidos_grasos_saturados_g':$temp[15] = $value;
                    break;
                case 'colesterol_mg':$temp[16] = $value;
                    break;
                case 'potasio_mg':$temp[17] = $value;
                    break;
                case 'sodio_mg':$temp[18] = $value;
                    break;
                case 'zinc_mg':$temp[19] = $value;
                    break;
                case 'magnesio_mg':$temp[20] = $value;
                    break;
                case 'vitamina_b6_mg':$temp[21] = $value;
                    break;
                case 'vitamina_b12_mcg':$temp[22] = $value;
                    break;
                case 'folato_mcg':$temp[23] = $value;
                    break;
                default:
                    break;
            }
        }
//        $rangosNutrientes = $temp;

        $series = array();
        $valoresMinimos = array();
        $valoresMinimos['name'] = 'Mínimo de adecuación';
        $valoresMinimos['type'] = 'line';
        $valoresMinimos['data'] = array();

        $valoresMaximos = array();
        $valoresMaximos['name'] = 'Máximo de adecuación';
        $valoresMaximos['type'] = 'line';
//        $valoresMaximos['plotOptions']['series']['dataLabels'] = [ 'enabled' => false];
        $valoresMaximos['data'] = array();


        foreach ($temp as $key => &$value) {
            if ($value['nombre'] == 'proteinas_g' ||
                $value['nombre'] == 'carbohidratos_g') {
                $value['min'] = round(($value['min'] * 95 / 100) * 4, 2);
                $value['max'] = round(($value['max'] * 105 / 100) * 4, 2);
            } else if ($value['nombre'] == 'grasa_total_g' ||
                $value['nombre'] == 'acidos_grasos_monoinsat_g' ||
                $value['nombre'] == 'acidos_grasos_poliinsaturad_g' ||
                $value['nombre'] == 'acidos_grasos_saturados_g'
            ) {
                $value['min'] = round(($value['min'] * 95 / 100) * 9, 2);
                $value['max'] = round(($value['max'] * 105 / 100) * 9, 2);
            } else {
                $value['min'] = round(($value['min'] * 90 / 100), 2);
                $value['max'] = round(($value['max'] * 110 / 100), 2);
            }
        }
        ksort($temp);
//          var_dump($temp);

        foreach ($temp as $key => $rangoValNutri) {
            array_push($valoresMinimos['data'], (float) $rangoValNutri['min']);
            array_push($valoresMaximos['data'], (float) $rangoValNutri['max']);
        }
        $series[1] = $valoresMinimos;
        $series[2] = $valoresMaximos;
//        var_dump($series);
//        die();
        return $series;
    }

    public function obtenerRangosNutrientes($edad_id, $tipo_carta_id)
    {
        $command = Yii::app()->db->createCommand()
            ->select('nu.nombre,nu.id,rn.min,rn.max')
            ->from('rango_nutrientes rn')
            ->leftJoin('nutrientes nu', 'rn.nutrientes_id = nu.id')
            ->where('rn.edades_id = :edades_id', array(':edades_id' => $edad_id))
            ->andWhere('rn.tipo_carta_id = :tipo_carta_id', array(':tipo_carta_id' => $tipo_carta_id));
        $result = $command->queryAll();
        if (!empty($result)) {
            return $result;
        } else {
            return null;
        }
    }
}
